package Negocio;

import java.sql.Date;
import java.sql.Time;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * @author Diego
 * @version 1.0
 * @created 29-sep-2013 23:12:29 p.m.
 */
public class Seccion {

    private Integer idSeccion;
    private String nombre;
    private ZonaDeDescarga zonaDeDescarga;
    private int capacidad;
    private Set<YerbaMateVerde> yerbaMateVerde;
    //Constructores

    public Seccion() {
    }

    public Seccion(String nombre, ZonaDeDescarga zonaDeDescarga, int capacidad, Set<YerbaMateVerde> yerbaMateVerde) {
        this.nombre = nombre;
        this.zonaDeDescarga = zonaDeDescarga;
        this.capacidad = capacidad;
        this.yerbaMateVerde = yerbaMateVerde;
    }

    public Seccion(String nombre, ZonaDeDescarga zonaDeDescarga, int capacidad) {
        this.nombre = nombre;
        this.zonaDeDescarga = zonaDeDescarga;
        this.capacidad = capacidad;
    }

    //Set & Get
    public Integer getIdSeccion() {
        return idSeccion;
    }

    public void setIdSeccion(Integer idSeccion) {
        this.idSeccion = idSeccion;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public ZonaDeDescarga getZonaDeDescarga() {
        return zonaDeDescarga;
    }

    public void setZonaDeDescarga(ZonaDeDescarga zonaDeDescarga) {
        this.zonaDeDescarga = zonaDeDescarga;
    }

    public int getCapacidad() {
        return capacidad;
    }

    public void setCapacidad(int capacidad) {
        this.capacidad = capacidad;
    }

    public Set<YerbaMateVerde> getYerbaMateVerde() {
        return yerbaMateVerde;
    }

    public void setYerbaMateVerde(Set<YerbaMateVerde> yerbaMateVerde) {
        this.yerbaMateVerde = yerbaMateVerde;
    }

    public boolean estaLibre(int kilos) {
        int ocupado = 0;
        for (YerbaMateVerde ymv : this.yerbaMateVerde) {
            ocupado += ymv.getKilaje();
        }
        int libre = this.capacidad - ocupado;
        return libre >= kilos;
    }

    public void agregarYerba(YerbaMateVerde ymv) {
        this.yerbaMateVerde.add(ymv);
        Empresa.persistencia.update(this);
    }

    public Set<YerbaMateVerde> getYerbaParaProcesar() {
        Set<YerbaMateVerde> yerba = new HashSet<>();
        for (YerbaMateVerde laYerba : this.yerbaMateVerde) {
            if (!laYerba.isProcesado()) {
                Date fecha = laYerba.getFecha();
                long tiempo = fecha.getTime();
                Time hora = laYerba.getHora();
                long tiempoYerba = tiempo + hora.getTime();
                long tiempoAhora = System.currentTimeMillis();
                if ((tiempoAhora - tiempoYerba) > 32400000) {
                    yerba.add(laYerba);
                }
            }
        }
        return yerba;
    }

    public Set<YerbaMateVerde> getYerbaTerceros() {
        Set<YerbaMateVerde> yerba = new HashSet<>();
        for (YerbaMateVerde laYerba : this.yerbaMateVerde) {
            if (laYerba.getOrigen().equals("tercero")) {
                    yerba.add(laYerba);
            }
        }
        return yerba;
    }

}
